在C++中使用套件管理器是頗為困難的事情,所以我需要另加一章去描述,難在哪呢?
其實就是難在C++的套件管理庫都離不開Cmake,但Cmake本身的套件管理確實比較複雜,所以就需要一日的篇幅。那好,在使用喔vcpkg之前我起碼需要知道怎麼安裝吧!?
第一步就是選好你想安裝vcpkg的地方,Unix裡多數人都會放在User profile裡面,也就是~/
,而Windows用戶則多數放在D:/
或者C:/
,視乎你的需求
第二步就是複製vcpkg 到你先選定的目錄,我假定是~/
git clone https://github.com/microsoft/vcpkg.git vcpkg
第三步就是安裝了
cd vcpkg
./bootstrap-vcpkg.sh # Unix 用戶
.\bootstrap-vcpkg.bat #Windows 用戶
等待幾分鐘,安裝完成後可以先尋找一個庫,然後安裝,如
./vcpkg search fmt
./vcpkg install fmt
這樣,我們就安裝了fmt庫了,那麼,該怎麼import進C++專案呢?
在你的Project中新建一個CMakeLists.txt
# 這是使用的Cmake版本,這裡是3.1 - 3.15,可以支援>=11版本的C++
cmake_minimum_required(VERSION 3.1...3.15)
# 你的主程序名
set(targets "hello")
# 你的專案資料,可以隨便寫
set(proj_name "modules")
set(ver "0.1")
# 選擇C++17版本
set(lang "CXX")
set(lang_ver "17")
# 你的專案名字 版本 編程語言(CXX是C++)
project(${proj_name} VERSION ${ver} LANGUAGES ${lang})
# 可執行檔名字 主檔名字
add_executable(${targets} ${targets}.cpp)
# 我們用的C++是 17版本的
target_compile_features(${targets} PUBLIC cxx_std_${lang_ver})
set_target_properties(${targets} PROPERTIES CXX_EXTENSIONS OFF)
# 加上 fmt 函式庫
find_package(fmt CONFIG REQUIRED)
target_link_libraries(${targets} PRIVATE fmt::fmt fmt::fmt-header-only)
在你的Project中新建一個Makefile
all: builds run
init:
mkdir -p build; \
cd build; \
cmake .. -DCMAKE_TOOLCHAIN_FILE="你的VCPKG位置/vcpkg/scripts/buildsystems/vcpkg.cmake"
builds:
cmake --build build
run:
./build/main
clean:
rm -rf build
你的VCPKG位置
要改成 你安裝VCPKG的位置喔,例如~/vcpkg/scripts/buildsystems/vcpkg.cmake
make init
如果是Windows用戶也不要緊,在Project 新建一個 init.ps1
,先吧程序編譯好
mkdir -p build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE="你的VCPKG位置/vcpkg/scripts/buildsystems/vcpkg.cmake"
cd ../
cmake --build build
然後運行
./build/main
在你的C++檔案中打上
#include<iostream>
#include<string>
#include "fmt/format.h"
using fmt::print;
using fmt::format;
using namespace std;
int main(){
auto name = "Alan"s;
print("你好{0},很高興見到你們?\n",name);
}
然後再build和run
make
Windows用戶則是
cmake --build build
./build/main
如果看見
你好Alan,很高興見到你們?
那就代表成功了?